package br.com.montadora.abc.util;

import br.com.montadora.abc.model.Funcionario;
import br.com.montadora.abc.model.Montadora;
import br.com.montadora.abc.model.MontadoraEstrangeira;
import br.com.montadora.abc.model.Pedido;
import br.com.montadora.abc.model.Pessoa;
import br.com.montadora.abc.model.Veiculo;
import java.util.Properties;
import org.hibernate.Session;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
/**
 *
 * @author Aurelio
 */
public class HibernateUtil {

	private static SessionFactory factory;
	
	static {
		Properties config = new Properties();
		String usuario = null;
		String senha = null;
		String local = null;
		String porta = null;
		String banco = null;
		
		usuario = "root";
		senha = "root";
		local = "localhost";
		porta = "3306";
		banco = "montadoraabc";
		
		AnnotationConfiguration conf = new AnnotationConfiguration();
		
		//Configuração do Banco de Daods
		conf.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
		conf.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
		conf.setProperty("hibernate.connection.url", "jdbc:mysql://" + local + ":" + porta + "/" + banco + "?autoReconnect=true");
		conf.setProperty("hibernate.connection.username", usuario);
		conf.setProperty("hibernate.connection.password", senha);
		conf.setProperty("hibernate.default_schema", banco);
		conf.setProperty("hibernate.hbm2ddl.auto", "update"); //há opção de UPDATE-CREATE-VALIDATE (este lança erro quando vê uma coisa diferente na aplicação
		
		//Configuração de Debug
		conf.setProperty("hibernate.show_sql", "true");
		conf.setProperty("hibernate.use_sql_comments", "false");
		conf.setProperty("hibernate.generate_statistics", "false");
		conf.setProperty("format_sql", "false");
		
		// Mapeando as classes anotadas
		conf.addAnnotatedClass(Montadora.class);
		conf.addAnnotatedClass(MontadoraEstrangeira.class);
		conf.addAnnotatedClass(Veiculo.class);
		conf.addAnnotatedClass(Pessoa.class);
		conf.addAnnotatedClass(Funcionario.class);
                conf.addAnnotatedClass(Pedido.class);
		factory = conf.buildSessionFactory();

	}
	
	//Importante, mas não necessário
	public static Session getSession() {
		return factory.openSession();
	}
	
}

